package com.hilihili.service;

import com.hilihili.domain.dto.DanmakuInfoDTO;
import com.hilihili.domain.dto.DanmakuPageDTO;
import com.hilihili.domain.dto.ShieldDanmukaDTO;
import com.hilihili.domain.entity.Danmaku;
import com.hilihili.domain.vo.DanmakuInfo;
import com.ruoyi.common.core.domain.AjaxResult;

import java.util.List;

/**
 * 评论Service接口
 *
 * @author xhc
 * @date 2023-11-15
 */
public interface IDanmakuService {

    public Long selectDanmakuCountByVideoId(Long videoId);

    /**
     * 查询评论
     *
     * @param id 评论主键
     * @return 评论
     */
    public Danmaku selectDanmakuById(Long id);

    /**
     * 通过视频id查找所有的视频弹幕
     *
     * @param videoId 视频id
     * @return
     */
    public List<DanmakuInfo> selectDanmakuList(String videoId);

    /**
     * 新增评论
     *
     * @param danmaku 评论
     * @return 结果
     */
    public int insertDanmaku(Danmaku danmaku);

    /**
     * 修改评论
     *
     * @param danmaku 评论
     * @return 结果
     */
    public int updateDanmaku(Danmaku danmaku);

    /**
     * 批量删除评论
     *
     * @param ids 需要删除的评论主键集合
     * @return 结果
     */
    public int deleteDanmakuByIds(Long[] ids);

    /**
     * 删除评论信息
     *
     * @param id 评论主键
     * @return 结果
     */
    public int deleteDanmakuById(Long id);

    /**
     * 获取所有视频弹幕
     *
     * @param danmakuInfoDTO 视频id
     * @return {@link String}
     */
    DanmakuPageDTO selectDanmakuListById(DanmakuInfoDTO danmakuInfoDTO);

    /**
     * 用户频闭他人用户
     * @param shieldDanmukaDTO
     * @return {@link AjaxResult}
     */
    AjaxResult shieldUserDanmuka(ShieldDanmukaDTO shieldDanmukaDTO);

    /**
     * 获取用户屏蔽用户列表
     * @param userId
     * @return {@link AjaxResult}
     */
    AjaxResult getShieldDanmukaList(Long userId);

    /**
     * 用户取消屏蔽弹幕用户
     * @param shieldDanmukaDTO
     * @return {@link AjaxResult}
     */
    AjaxResult cancelShieldUserDanmuka(ShieldDanmukaDTO shieldDanmukaDTO);
}
